// 引入 api
import { login, getUserInfo, getdetailedInfo } from '@/api/user'
import { getToken, setToken } from '@/utils/auth'
const state = {
  // 储存数据
  // 如果有数据就拿数据，无数据就为空
  token: getToken() || '',
  userInfo: {}
}
const mutations = {
  logout(state) {
    state.token = ''
    state.userInfo = {}
  },
  // 修改 state 只能执行同步修改
  setToken(state, data) {
    // mutations 默认得到两个参数 state对象, 被调用时传入的参数 payload
    state.token = data
    console.log('1', data)
    // 本地存储data
    setToken(data)
  },
  setUserInfo(state, payload) {
    state.userInfo = payload
  }
}
const actions = {
// 这个叫做 login 的 actions 属性是一个函数
  // 需要调用同名 api login 发送请求
  // 每个 actions 默认都有 context 当前模块, data 传入数据, 一个两个参数
  async login(context, data) {
    const res = await login(data)
    console.log('数据比较少', res)
    // 利用第一个参数模块实例的 commit 方法调用 mutations
    // 把res直接用就可以了，不用res.data.data了
    // 因为拦截器已经输出了深层 res.data.data, 这里接到数据直接用即可

    context.commit('setToken', res)
    // 存储时间 --为了主动监听超时，登录成功后  记时间
    const now = Date.now()
    localStorage.setItem('time', now)
  },
  async getUserInfo(context) {
    const res = await getUserInfo()
    const detaile = await getdetailedInfo(res.userId)
    // console.log('获取员工详细信息', detaile)
    const userInfo = {
      ...res,
      ...detaile
    }
    context.commit('setUserInfo', userInfo)
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

